אז ככה זהו קובץ index.php בתיקיית ROOT של WORDPRESS שבו ישנם רידיירקטים שאמורים לזהות מובייל ולהפנות אוטומטית לקישור אחר
הקוד ניראה ככה והוא משתמש בפלאגין שמזהה מובייל
הכל עובד חוץ מבעייה אחת,
שברגע שחוזרים לאתר הרגיל מהמובייל. ומספיק שלוחצים על קישור הוא שוב מחזיר למובייל. מבלי אפשרות לגלוש בתוך האתר הרגיל.
האתר ניקרא דשא עוז
http://www.desheoz.co.il/
function mobile_Detection()
{
include_once 'mobile/mobiledetect/Mobile_Detect.php';
$detect = new Mobile_Detect();
// Any mobile device (phones or tablets).
if ($detect->isMobile()):
// Mobile detected Start mobile wordpress
$mobileOn = ($_GET['status']);
// if status off session will be destroyed
if ($mobileOn != off):
session_start();
$_SESSION['mobile'] = 'on';
header("location:http://" . $_SERVER['HTTP_HOST'] . "/mobile" . $_SERVER['REQUEST_URI']);
exit;
else:
session_start();
// kill session
unset($_SESSION['mobile']);
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require(dirname(__FILE__) . '/wp-blog-header.php');
endif;
else:
// Mobile not detected Start normal wordpress
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require(dirname(__FILE__) . '/wp-blog-header.php');
endif;
}
mobile_Detection();
6 תשובות
אולי הבעיה לא בקוד אלא בציפיות.
אם אתה נכנס לאתר דרך מכשיר טלפון - אתר עובר לכתובת אחרת
אם אתה אחרי זה שוב נכנס לאתר הרגיל ממכשיר הטלפון (מה שאתה קורא לו "שברגע שחוזרים לאתר הרגיל מהמובייל") - מה אתה מצפה שיקרה? כנראה שהוא שוב אמור להחזיר אותך לכתובת האחרת.
כי מבחינת המחשב אין הבדל בין נכנסים לאתר לאתר הרגיל לבין חוזרים לאתר הרגיל.
איך תרצה לפתור את המצב הזה?
אולי צריך כפתור בגרסת המובייל שאומר לחזור לאתר הרגיל (שבלחיצה על הכפתור הזה תגיד לאתר הרגיל לא לעשות יותר הפניות) ואז גם להוסיף באתר הרגיל כפתור "לגרסת מובייל" שתחזיר את המצב ל_הפניות פעילות ?
אז זהו שכפתור כזה ישנו באתר המובייל אך משהו בחשיבה אצלי לא נכון אולי תכנס לאתר ותראה את זה במו ענייך ותבין על מה אני מדבר?
זה כל תוכן קובץ ה-index.php שלך?
אולי יש טעם לנקות את הקוד קצת? להוריד כפל קוד, את הפונקציה המיותרת ועוד כל מני דברים?
אולי משהו כזה יספיק?
session_start();
include_once 'mobile/mobiledetect/Mobile_Detect.php';
$detect = new Mobile_Detect();
// Any mobile device (phones or tablets).
if ($detect->isMobile())
{
// Mobile detected Start mobile wordpress
$shouldKeepDesktopVersion = isset($_GET['desktop']);
// if status off session will be destroyed
if (!$shouldKeepDesktopVersion):
$_SESSION['mobile'] = 'on';
header("location:http://" . $_SERVER['HTTP_HOST'] . "/mobile" . $_SERVER['REQUEST_URI']);
exit;
else:
unset($_SESSION['mobile']);
endif;
}
// Mobile not detected Start normal wordpress
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require(dirname(__FILE__) . '/wp-blog-header.php');
וכל מה שצריך לעשות הוא כפתור "חזור לגרסה המלאה" שיש לו בכתובת
זה מעולה החלפתי את הקוד בשלך הפונקציונליות אותו דבר. עובד כמו קודם רק כאשר עוברים לאתר מלא ובתוכו עוברים לדפים אחרים הוא שוב מחזיר לסלולר מאחר והGET נעלם. תציץ שוב בבקשה ואם אתה יכול ליצור איתי קשר בפרטי עוד יותר טוב. תודה
צודק, בו ננסה ככה:
session_start();
// We went back from mobile to normal,
// therefore keep in mind all further requests should be normal
if(isset($_GET['desktop']))
{
$_SESSION['showDesktopVersion'] == true;
}
$shouldStayOnDesktop = isset($_SESSION['showDesktopVersion']) && $_SESSION['showDesktopVersion'] === true;
if(!$shouldStayOnDesktop)
{
include_once 'mobile/mobiledetect/Mobile_Detect.php';
$detect = new Mobile_Detect();
// Any mobile device (phones or tablets).
if ($detect->isMobile())
{
// Mobile device. Send them to mobile version
$_SESSION['showDesktopVersion'] = false;
header("location:http://" . $_SERVER['HTTP_HOST'] . "/mobile" . $_SERVER['REQUEST_URI']);
exit;
}
else
{
// This is no mobile device,
// therefore we can always redirect to desktop version
// without checking again on every request
$_SESSION['showDesktopVersion'] = true;
}
}
// Mobile not detected Start normal wordpress
define('WP_USE_THEMES', true);
/** Loads the WordPress Environment and Template */
require(dirname(__FILE__) . '/wp-blog-header.php');